#!/usr/bin/env python
#encoding latin1

from mochila import *
from camino_minimo import *

def horas(minutos):
        hh = str(int(minutos/60))
        if len(hh) == 1:
                hh = '0' + hh
        mm = str(minutos%60)
        if len(mm) == 1:
                mm = '0' + mm
        hora = hh + ':' + mm
        return hora

def listar_fabricas(entorno, parametros):
	solucion_conferencista = entorno["solucion_conferencista"]
	print("Cantidad:",solucion_conferencista.__len__())
	listado_fabricas = entorno["fabricas"]
	for f in solucion_conferencista:
		print('{0},{1},{2}'.format(f,horas(listado_fabricas[f][1]),horas(listado_fabricas[f][2])))

def valuar_juguetes(entorno, parametros):
	fabrica = int(parametros[0])
	if not fabrica in entorno["fabricas"]:
		print("Error : la fabrica con id",fabrica,"no existe")
		return
	juguetes = entorno["juguetes"]
	solucion_mochila = entorno["solucion_mochila"]
	if not fabrica in solucion_mochila:
		inventario = list()
		for j in juguetes[fabrica].keys():
			juguete = juguetes[fabrica][j]
			inventario.append(item_inventario(j,juguete[0],juguete[1]))
		solucion_mochila[fabrica] = resolver_mochila(inventario,entorno["capacidad"])

	print("Total:",solucion_mochila[fabrica][0],"Sonrisas")

def valuar_juguetes_total(entorno, parametros):
	contador_sonrisas = 0
	solucion_conferencista = entorno["solucion_conferencista"]
	solucion_mochila = entorno["solucion_mochila"]

	for fabrica in solucion_conferencista:
		contador_sonrisas += solucion_mochila[fabrica][0]

	print("Total:",contador_sonrisas,"Sonrisas")

def camino_optimo(entorno, parametros):
	fabrica = int(parametros[0])
	if not fabrica in entorno["fabricas"]:
		print("Error : la fabrica con id",fabrica,"no existe")
		return

	solucion_camino = entorno["solucion_camino"]
	if not fabrica in solucion_camino:
		fabricas = entorno["fabricas"]
		camino = entorno["camino"]
		solucion_camino[fabrica] = Generar_recorrido(camino,(fabricas[fabrica])[0])
	mapa = entorno["mapa"]

	camino = solucion_camino[fabrica]
	print("Distancia: {} Metros".format(camino[0]))
	for i in range(1,camino.__len__()):
		c = camino[i]
		nodo = mapa[c]
		print ('{},{}'.format(nodo[2], nodo[3]))

def listar_juguetes(entorno, parametros):
	fabrica = int(parametros[0])
	if not fabrica in entorno["fabricas"]:
		print("Error : la fabrica con id {} no existe".format(fabrica))
		return

	solucion_mochila = entorno["solucion_mochila"]
	if not fabrica in solucion_mochila:
		inventario = list()
		juguetes = entorno["juguetes"]
		for j in juguetes[fabrica].keys():
			juguete = juguetes[fabrica][j]
			inventario.append(item_inventario(j,juguete[0],juguete[1]))
		solucion_mochila[fabrica] = resolver_mochila(inventario,entorno["capacidad"])

	print("Total: {} Sonrisas".format(solucion_mochila[fabrica][0]))
	for j in range(1,solucion_mochila[fabrica].__len__()-1):
		print(solucion_mochila[fabrica][j])
